﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using LapvWebComponent;
using LapvBussiness;

namespace Lapv.Product
{
    public partial class ProCateAdd : System.Web.UI.Page
    {
        int cateid = 0;
        private static readonly ILog log = LogManager.GetLogger(typeof(ProCateAdd).Name);
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Params["cateid"] != null)
                int.TryParse(Request.Params["cateid"], out cateid);
            if (Page.IsPostBack) return;
            string urlReturn = this.Request.RawUrl.ToString();
            ProviderAdmin.CheckAuthen(urlReturn, 3);
            if (cateid > 0)
                LoadCate(cateid);
        }
        void LoadCate(int id)
        {
            try
            {
                if (id > 0)
                {
                    using (lapvwebEntities db = new lapvwebEntities())
                    {
                        news_category nc = db.news_category.Where(ec => ec.id == id).FirstOrDefault();
                        if (nc != null)
                        {
                            txtName.Text = nc.name;
                            rbAllowDelete.SelectedValue = nc.allowdelete.ToString();
                        }

                    }
                }
            }
            catch (Exception ex)
            {

                log.Error(ex.Message, ex);
                ((Lapv)this.Master).MessageError = "Quá trình load dữ liệu bị lỗi. " + ex.Message;
            }
        }
        protected void Submit(object sender, EventArgs e)
        {

            if (Request.Params["cateid"] != null)
                int.TryParse(Request.Params["cateid"].ToString(), out cateid);
            string msg = "";
            string actiontype = "";
            try
            {


                if (cateid > 0)
                {
                    actiontype = "NEWSCATE_EDIT";
                    using (lapvwebEntities db = new lapvwebEntities())
                    {
                        news_category nc = db.news_category.Where(en => en.id == cateid).FirstOrDefault();
                        if (nc != null)
                        {
                            nc.name = txtName.Text.Trim();
                            nc.allowdelete = bool.Parse(rbAllowDelete.SelectedValue);
                            db.ApplyCurrentValues(nc.EntityKey.EntitySetName, nc);
                            db.SaveChanges();
                            msg = "Sửa danh mục tin thành công. Mã danh mục: " + nc.id;
                        }
                        else
                        {
                            ((Lapv)this.Master).MessageError = "Không tồn tại đối tượng này.";
                            return;
                        }
                    }
                }
                else
                {
                    actiontype = "NEWSCATE_ADD";
                    news_category ncNew = new news_category();
                    ncNew.name = txtName.Text.Trim();
                    ncNew.allowdelete = bool.Parse(rbAllowDelete.SelectedValue);
                    using (lapvwebEntities db = new lapvwebEntities())
                    {
                        db.AddTonews_category(ncNew);
                        db.SaveChanges();
                    }
                    msg = "Thêm danh mục tin thành công. Mã danh mục: " + ncNew.id;

                }
                Response.Redirect("CateManager.aspx");
            }
            catch (Exception ex)
            {
                if (cateid > 0)
                    msg = "Sửa danh mục tin bị lỗi. Mã danh mục: " + cateid + ". Do " + ex.Message;
                else msg = "Thêm danh mục tin bị lỗi. Do " + ex.Message;
                log.Error(ex.Message, ex);
                ((Lapv)this.Master).MessageError = "Quá trình cập nhật dữ liệu bị lỗi. " + ex.Message;
            }

            try
            {
                int uid = 0;
                string uname = string.Empty;
                uid = ProviderAdmin.GetUsserId();
                if (Session["UserName"] != null)
                    uname = Session["UserName"].ToString();
                ProviderAdmin.AddLog(uid, uname, msg, string.Empty, actiontype);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
            }
        }
    }
}